<?php
/**
 * Action类的主要职责：接收数据和显示试图，然后把数据传递给model类进行验证,最后把结果告知用户
 */
class Action {
    protected $tpl = null;
    protected $model = null;
    protected $redirect = null;
    protected function __construct() {
        $this->tpl = TPL::getInstance();
        $this->model = Factory::initModel();
        $this->redirect = Redirect::getInstance($this->tpl);     //取得跳转句柄
    }

    protected function page($pagesize = PAGE_SIZE,$model=null) {
        $this->model = isset($model) ? $model : $this->model;  //防止一些模块没有指定model
        $page = new Page($this->model->total(),$pagesize);
		$this->model->setLimit($page->getLimit());
		$this->tpl->assign('page',$page->showPage());
		$this->tpl->assign('num',($page->getPage()-1)*PAGE_SIZE);
    }

    //run方法是各模块通过网址url参数m的值来调用模块自身的方法的一个中介者
    public function run() {
        $m = isset($_GET['m']) ? $_GET['m'] : 'index';          //默认调用index方法
        if(!method_exists($this,$m)) exit('<h2>粗大事了[error]:'.get_class($this).'模块没有声明'.$m.'方法</h2>');
        $this->$m();
    }
}
?>